﻿using FySystem.IO;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace FySystem.Net.LSTP.MC
{
    /// <summary>
    /// 使用方法：服务端只需要 实例化该类，然后在项目中创建继承自LSTPControllerBase的控制器类，在该类中创建拥有[LSTPApi]属性的函数，
    /// 函数的传入参数和返回参数只能是CSon
    /// </summary>
    public class LSTPMCServer : LSTPMCBase
    {
        /// <summary>
        /// 服务器监听
        /// </summary>
        public LSTPListener LSTPListener { get; private set; }

        /// <summary>
        /// 创建服务端
        /// </summary>
        /// <param name="ip"></param>
        /// <param name="port"></param>
        public LSTPMCServer(IPAddress ip,int port)
        {
            try
            {
                IP = ip;
                Port = port;

                //通过反射获取所有控制器
                GetControllers();

                //初始化连接
                LSTPListener = new LSTPListener(ip, port);
                LSTPListener.Listen(null, OnRequest);
            }
            catch (Exception)
            {
                throw;
            }
        }
    }
}
